package com.atguigu.guli.service.trade.service;

import com.atguigu.guli.service.trade.entity.Order;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author zero
 * @since 2020-05-30
 */
public interface OrderService extends IService<Order> {

    /**
     * 创建订单
     * @param courseId 课程信息
     * @param memberId 会员id
     * @return 订单id
     */
    String saveOrder(String courseId, String memberId);

    /**
     * 根据用户id查询自己的订单
     * @param orderId 订单id
     * @param memberId 用户id
     * @return 查询信息
     */
    Order getByOrderId(String orderId, String memberId);

    /**
     * 查询课程是否已购买
     * @param courseId 课程id
     * @param memberId 用户id
     * @return 购买结果
     */
    Boolean isBuyByCourseId(String courseId, String memberId);

    /**
     * 获取当前用户的订单列表
     * @param id 用户id
     * @return 订单列表
     */
    List<Order> selectByMemberId(String id);

    /**
     * 根据用户id删除订单
     * @param orderId 订单id
     * @param memberId 用户id
     * @return 删除结果
     */
    boolean removeById(String orderId, String memberId);

    /**
     * 根据订单号查询订单信息
     * @param orderNo 订单号
     * @return 订单信息
     */
    Order getOrderByOrderNo(String orderNo);

    /**
     * 更新订单状态
     * @param resultMap 返回结果
     */
    void updateOrderStatus(Map<String, String> resultMap);

    /**
     * 根据订单号查询订单状态
     * @param orderNo 订单号
     * @return 查询结果
     */
    boolean queryPayStatus(String orderNo);
}
